home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / gfx / show / mpeg_player122.lha / src / util32.c < prev    next >
C/C++ Source or Header  |  1992-12-08  |  2KB  |  70 lines

  1. #include <stdio.h>
  2. #include <X11/Xlib.h>
  3. #include <X11/Xutil.h>
  4.  
  5. /*
  6.  * Return a pointer to a full color bit visual on the dpy
  7.  */
  8. Visual *
  9. FindFullColorVisual (dpy, depth)
  10.     Display *dpy;
  11.     int *depth;
  12. {
  13.   XVisualInfo vinfo;
  14.   XVisualInfo *vinfo_ret;
  15.   int numitems, maxdepth;
  16.   
  17.   vinfo.class = TrueColor;
  18.   
  19.   vinfo_ret = XGetVisualInfo(dpy, VisualClassMask, &vinfo, &numitems);
  20.   
  21.   if (numitems == 0) return NULL;
  22.  
  23.   maxdepth = 0;
  24.   while(numitems > 0) {
  25.     if (vinfo_ret[numitems-1].depth > maxdepth) {
  26.       maxdepth = vinfo_ret[numitems-1 ].depth;
  27.     }
  28.     numitems--;
  29.   }
  30.   XFree(vinfo_ret);
  31.  
  32.   if (maxdepth < 24) return NULL;
  33.  
  34.   if (XMatchVisualInfo(dpy, DefaultScreen(dpy), maxdepth, 
  35.                TrueColor, &vinfo)) {
  36.     *depth = maxdepth;
  37.     return vinfo.visual;
  38.   }
  39.   
  40.   return NULL;
  41. }
  42.  
  43. Window
  44. CreateFullColorWindow (dpy, x, y, w, h)
  45.     Display *dpy;
  46.     int x, y, w, h;
  47. {
  48.     int depth;
  49.     Visual *visual;
  50.     XSetWindowAttributes xswa;
  51.     unsigned int mask;
  52.     unsigned int class;
  53.     int screen;
  54.  
  55.     screen = XDefaultScreen(dpy);
  56.     class = InputOutput;    /* Could be InputOnly */
  57.     visual = FindFullColorVisual (dpy, &depth);
  58.     if (visual == NULL) {
  59.     return 0;
  60.     }
  61.     mask = CWBackPixel | CWColormap | CWBorderPixel;
  62.     xswa.colormap = XCreateColormap(dpy, XRootWindow(dpy, screen),
  63.             visual, AllocNone);
  64.     xswa.background_pixel = BlackPixel(dpy, DefaultScreen(dpy));
  65.     xswa.border_pixel = WhitePixel(dpy, DefaultScreen(dpy));
  66.  
  67.     return XCreateWindow(dpy, RootWindow(dpy, screen), x, y, w, h,
  68.     1, depth, class, visual, mask, &xswa);
  69. }
  70.